package com.shenshen.Unit;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

import javax.activation.MimetypesFileTypeMap;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class WebUtil {

	/**
	 * 功能：下载文件
	 *
	 * @param InputStream         inputStream 输入流
	 * @param HttpServletResponse response 设置与输出
	 * @param String              filename 设置下载的文件名
	 * @param boolean             insideView 是否在浏览器窗口内部打开，否则下载
	 *
	 */
	public static void download(InputStream inputStream, HttpServletResponse response, String filename,
			boolean insideView) {

		File file = new File(filename);

		// TODO 实现代码
		response.addHeader("pragma", "NO-cache");
		response.addHeader("Cache-Control", "no-cache");
		response.addDateHeader("Expries", 0);
		response.setContentType("application/x-download");

		// response.setHeader("Content-Type",
		// ServletContext.getMimeType(file.getName()));
		String contentType = new MimetypesFileTypeMap().getContentType(file);
		// System.out.println(contentType);
		response.setHeader("Content-Type", contentType);

		response.setHeader("Content-Length", String.valueOf(file.length()));
		response.setHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\"");

		try {
			// 获取输出流
			ServletOutputStream os = response.getOutputStream();
			// 获取输入流
			StreamUtil.copy(inputStream, os);
			os.flush();
			// StreamUtil.closings(inputStream,os);

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	/**
	 * 功能：下载文件
	 *
	 * @param byte[]              contents 要下载的内容
	 * @param HttpServletResponse response 设置与输出
	 * @param String              filename 设置下载的文件名
	 * @param boolean             insideView 是否在浏览器窗口内部打开，否则下载
	 *
	 */
	public static void download(byte[] contents, HttpServletResponse response, String filename, boolean insideView) {

	}

	/**
	 * 功能：获取前端字符串参数
	 * 
	 * @param request
	 * @param name         参数名
	 * @param defaultValue 默认值
	 * @return
	 */
	public static String getStringByRequestParameter(HttpServletRequest request, String name, String defaultValue) {
		// TODO 实现代码
		String paraValue = (String) request.getAttribute(name);
		if (paraValue == null)
			paraValue = defaultValue;
		return paraValue;

	}

	/**
	 * 功能：获取布尔类型参数
	 * 
	 * @param HttpServletRequest request
	 * @param String             name 参数名
	 * @param int                defaultValue 默认值
	 * @return
	 */
	public static int getIntByRequestParameter(HttpServletRequest request, String name, int defaultValue) {
		// TODO 实现代码
		String paraValue = (String) request.getAttribute(name);
		// 如果没有参数则使用默认数值
		if (paraValue == null)
			return defaultValue;

		// 给了参数 则进行转换成int
		int parseInt = Integer.parseInt(paraValue);
		return parseInt;

	}

	/**
	 * 功能：获取布尔类型参数
	 * 
	 * @param HttpServletRequest request
	 * @param String             name 参数名
	 * @param boolean            defaultValue 默认值
	 * @return
	 */
	public static boolean getBooleanByRequestParameter(HttpServletRequest request, String name, boolean defaultValue) {
		// TODO 实现代码
		String paraValue = (String) request.getAttribute(name);
		// 如果没有参数则使用默认数值
		if (paraValue == null)
			return defaultValue;

		// 给了参数 则进行转换成boolean
		boolean parseBl = Boolean.parseBoolean(paraValue);
		return parseBl;
	}
}
